package com.kjlink.widget.monitoring.annotation;

import com.kjlink.widget.monitoring.enums.EventTypeEnum;
import com.kjlink.widget.monitoring.enums.MonitorTypeEnum;

import java.lang.annotation.*;

/**
 * 描述:
 * 生产运维自动化监控 上报事件注解
 *
 * @author Vic.xu
 * @since 2025-08-21 13:50
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MonitoringEventReport {

    /**
     * 是否启用
     */
    boolean enable() default true;

    /**
     * 事件类型
     */
    EventTypeEnum eventType();

    /**
     * 监控类型
     */
    MonitorTypeEnum monitorType() default MonitorTypeEnum.HOST_APP;

    /**
     * 业务Id参数 表达式：对应方法中的参数,通过SpEL表达式取值
     * 如:
     * 获取参数id:   #id
     * 获取对象参数user中的id： #user.id
     * 获取map参数userMap中的id： #userMap['id']
     */
    String businessIdParamExpress();

    /**
     * 业务类型
     */
    String businessType() default "";
}
